package com.cskaoyan.service.impl;

import com.cskaoyan.mapper.RegionMapper;
import com.cskaoyan.model.Region;
import com.cskaoyan.model.RegionExample;
import com.cskaoyan.model.vo.BaseRespVO;
import com.cskaoyan.model.vo.RegionDataVO;
import com.cskaoyan.model.vo.RegionListVO;
import com.cskaoyan.service.RegionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.LinkedList;
import java.util.List;

/**
 * @author ：王李轶群
 * @description：商场管理行政区域模块
 * @date ：5/5/22 5:23 PM
 */
@Service
public class RegionServiceImpl implements RegionService {
    @Autowired
    RegionMapper regionMapper;

    @Override
    public BaseRespVO<RegionDataVO> getregionList() {
        RegionExample regionExample = new RegionExample();
        RegionExample.Criteria criteria = regionExample.createCriteria();
        criteria.andPidEqualTo(0);
        List<RegionListVO> listByPId0 = getListByPId(regionExample);
        for (RegionListVO regionListVO : listByPId0) {
            Integer pid = regionListVO.getId();
            RegionExample regionExample1 = new RegionExample();
            RegionExample.Criteria criteria1 = regionExample1.createCriteria();
            criteria1.andPidEqualTo(pid);
            List<RegionListVO> listByPId = getListByPId(regionExample1);
            if(listByPId==null){
                continue;
            }
            for (RegionListVO listVO : listByPId) {
                Integer pid1 = listVO.getId();
                RegionExample regionExample2 = new RegionExample();
                RegionExample.Criteria criteria2 = regionExample2.createCriteria();
                criteria2.andPidEqualTo(pid1);
                List<RegionListVO> listByPId1 = getListByPId(regionExample2);
                if(listByPId1==null){
                    continue;
                }
                listVO.setChildren(listByPId1);
            }
            regionListVO.setChildren(listByPId);
        }
        RegionDataVO regionDataVO = new RegionDataVO();
        regionDataVO.setLimit(31);
        regionDataVO.setPage(1);
        regionDataVO.setPages(1);
        regionDataVO.setTotal(31);
        regionDataVO.setList(listByPId0);
        BaseRespVO<RegionDataVO> regionDataVOBaseRespVO = new BaseRespVO<>();
        regionDataVOBaseRespVO.setData(regionDataVO);
        regionDataVOBaseRespVO.setErrmsg("成功");
        regionDataVOBaseRespVO.setErrno(0);
        return regionDataVOBaseRespVO;
    }

    private List<RegionListVO> getListByPId(RegionExample regionExample) {
        List<Region> regions = regionMapper.selectByExample(regionExample);
        LinkedList<RegionListVO> regionListVOS = new LinkedList<>();
        for (Region region : regions) {
            RegionListVO regionListVO = new RegionListVO();
            regionListVO.setId(region.getId());
            regionListVO.setPid(region.getPid());
            regionListVO.setName(region.getName());
            regionListVO.setCode(region.getCode());
            regionListVO.setType(region.getType());
            regionListVOS.add(regionListVO);
        }
        return regionListVOS;
    }
}
